package net.servir.censo.service;

import java.sql.Array;
import java.util.LinkedList;
import java.util.List;

import oracle.jdbc.OracleTypes;
import net.servir.censo.model.SistemaEtapa;
import net.servir.censo.model.Ambito;
import net.servir.censo.model.Ejecutora;
import net.servir.censo.model.Etapa;
import net.servir.censo.model.FuncionLeyenda;
import net.servir.censo.model.PuestoTipo;
import net.servir.censo.model.ResponsableEjecutoraAmbito;
import net.servir.censo.model.ResponsableIdentificacion;
import net.servir.censo.model.ResumenEtapa;
import net.servir.censo.model.Sistema;
import net.servir.censo.model.Universidad;

public interface CensoService {

	public LinkedList<Sistema> ObtenerSistema();

	public LinkedList<Ambito> ObtenerAmbito(Number id_sistema);

	public LinkedList<Ejecutora> ObtenerEjecutora(Number id_ejecutora);

	public LinkedList<ResponsableIdentificacion> ObtenerResponsableIdentificacion(
			String dni);

	public ResponsableIdentificacion GetResponsableIdentificacion(String dni,
			Number idAmbito, Number idSistema);

	public List ObtenerRptEjecutorCenso(Number id_sistema, Number id_ejecutora);

	public Integer ValidarUsuario(String dni, String clave);

	public Integer ValidarUsuarioAmbito(String dni, String clave);

	public List ObtenerRptEjecutoraCenso(Number idEjecutora, Number idAmbito,
			Number para_reporte, String dni, String nombre, String puesto_tipo,
			Number id_responsable);

	public Integer numObservacion(Number idEjecutora, Number idAmbito);

	public List ObtenerRptResumenEjecutoraCenso(Number idEjecutora,
			Number idAmbito, Number idResponsable);

	public List<FuncionLeyenda> RptFuncionLeyenda(Number id_ambito,
			Number idResponsable);

	public List RptPuestoLeyenda(Number id_ambito);

	public void DeleteServicioCivil(Integer idAmbito, Integer idServicioCivil);

	public Integer ObtenerNumeroFunciones(Integer idAmbito,
			Integer idResponsable);

	public Integer ObtenerNumeroPuestos_tipo(Integer idAmbito);

	public String ObtenerEncabezadoFunciones(Integer idAmbito,
			Integer idResponsable);

	public String ObtenerFechaHoraSistema();

	public String ObtenerFechaSistema();

	public Ambito GetAmbito(Number idAmbito);

	public Sistema GetSistema(Number idSistema);

	public Sistema getSistema(Number idSistema, String dni, Integer idAmbito);

	public Ejecutora GetEjecutora(Number idEjecutora);

	public ResponsableEjecutoraAmbito GetResponsableEjecutoraAmbito(
			Number idResponsable, Number idEjecutora, Number idAmbito);

	public void ActualizarTelefonoEjecutora(Number idEjecutora,
			String telefonoEjecutora);

	public List<Etapa> ObtenerEtapasAmbito(Number idAmbito, Number idResponsable);
	
	public List<Etapa> ObtenerEtapasAmbito(Number idAmbito, Number idResponsable, String isFuncionesPersonalizadas, Number id_sistema_etapa);

	public void FinalizarInscripcionParticipantes(Number idResponsable,
			Number idEjecutora, Number idAmbito);

	public List<ResponsableEjecutoraAmbito> ObtenerAmbitosResponsable(
			Number idResponsable);

	public List<PuestoTipo> getPuestoTipos(Number idSistema);

	public PuestoTipo getPuestoTipo(Number idPuestoTipo);

	public Integer getIdPuestoOperador(Number idSistema);

	public String esJefePuestoTipo(Number idPuestoTipo);

	public Sistema getSistema(Integer idSistema);

	public Integer AplicaFuncionesPersonalizadas(Number idResponsable);

	public Integer ObtenerIdNivelGobierno(Number idEjecutora);

	public Integer getIdResponsable(String dni, Number idEjecutora);

	public String getJefe(String dni, Number idResponsable);

	public List<ResumenEtapa> ObtenerResumenEtapa(Number idAmbito,
			Number idResponsable);

	public void enviaCorreoFinCenso(Number idResponsable, Number idSistema,
			Number idAmbito);

	public void actualizarResponsableEjecutoraAmbito(
			ResponsableEjecutoraAmbito responsableEjecutoraAmbito);

	public LinkedList<SistemaEtapa> ObtenerSistemaEtapa();

	public LinkedList<SistemaEtapa> ObtenerSistemaEtapa(Number idResponsable);

	public void ActualizaEjecutora(Ejecutora ejecutora);
	
	public List<Universidad> getUniversidades();
}
